package com.fjw.controller;

import com.fjw.pojo.PostRecord;
import com.fjw.pojo.Result;
import com.fjw.service.PostRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 简历投递记录控制器
 * 提供简历投递记录的增删改查RESTful接口
 */
@RestController
@RequestMapping("/postRecord")
public class PostRecordController {
    @Autowired
    private PostRecordService postRecordService;

    /**
     * 添加投递记录
     * @param postRecord 投递记录实体，JSON格式
     * @return 操作结果
     */
    @PostMapping("/add")
    public Result add(@RequestBody PostRecord postRecord){
        System.out.println(postRecord); // 打印请求参数（调试用）
        postRecordService.add(postRecord);
        return Result.success();
    }

    /**
     * 通过ID查询投递记录
     * @param id 投递记录ID（URL参数）
     * @return 投递记录实体
     */
    @GetMapping("/findById")
    public Result<PostRecord> findById(Integer id){
        System.out.println(id); // 打印请求参数（调试用）
        PostRecord res = postRecordService.findById(id);
        return Result.success(res);
    }

    /**
     * 通过简历ID查询投递记录列表
     * @param cv_id 简历ID（URL参数）
     * @return 投递记录列表
     */
    @GetMapping("/findByCv_id")
    public Result<List<PostRecord>> findByCv_id(Integer cv_id){
        System.out.println(cv_id); // 打印请求参数（调试用）
        List<PostRecord> res = postRecordService.findByCv_id(cv_id);
        return Result.success(res);
    }

    /**
     * 通过多个简历ID查询投递记录列表
     * @param cvids 简历ID列表，JSON数组格式
     * @return 投递记录列表
     */
    @PostMapping("/findByCv_ids")
    public Result<List<PostRecord>> findByCv_ids(@RequestBody List<Integer> cvids){
        System.out.println(cvids); // 打印请求参数（调试用）
        List<PostRecord> records = new ArrayList<>();
        for(int i=0;i<cvids.size();i++) {
            List<PostRecord> res = postRecordService.findByCv_id(cvids.get(i));
            for(int j=0;j<res.size();j++){
                records.add(res.get(j));
            }
        }
        System.out.println(records); // 打印查询结果（调试用）
        return Result.success(records);
    }

    /**
     * 通过文章ID（招聘信息）查询投递记录列表
     * @param article_id 文章ID（URL参数）
     * @return 投递记录列表
     */
    @GetMapping("/findByArticle_id")
    public Result<List<PostRecord>> findByArticle_id(Integer article_id){
        System.out.println(article_id); // 打印请求参数（调试用）
        List<PostRecord> res = postRecordService.findByArticle_id(article_id);
        return Result.success(res);
    }

    /**
     * 通过简历ID和文章ID查询唯一投递记录
     * @param cv_id 简历ID（URL参数）
     * @param article_id 文章ID（URL参数）
     * @return 投递记录实体
     */
    @GetMapping("/findByCv_idAndArticle_id")
    public Result<PostRecord> findByCv_idAndArticle_id(Integer cv_id,Integer article_id){
        System.out.println(cv_id); // 打印请求参数（调试用）
        System.out.println(article_id); // 打印请求参数（调试用）
        PostRecord res = postRecordService.findByCv_idAndArticle_id(cv_id, article_id);
        return Result.success(res);
    }

    /**
     * 通过ID更新投递记录的企业反馈意见
     * @param id 投递记录ID（URL参数）
     * @param advice 企业反馈意见（URL参数）
     * @return 操作结果
     */
    @PostMapping("/updateById")
    public Result updateById(Integer id,String advice){
        System.out.println(id); // 打印请求参数（调试用）
        System.out.println(advice); // 打印请求参数（调试用）
        postRecordService.updateById(id,advice);
        return Result.success();
    }
}
